#ifndef WINDOW7_H
#define WINDOW7_H

#include <QMainWindow>
#include <QMenu>
#include <QAction>
#include <QHBoxLayout>
#include "snack_settings.h"
#include "snakewidget.h"
#include "snakeboardwidget.h"
/**
 * 贪吃蛇主窗口
 * @brief The Window7 class
 */
namespace Ui {
class Window7;
}
class Window7 : public QMainWindow
{
    Q_OBJECT
public:
    explicit Window7(QWidget *parent = nullptr);
    virtual ~Window7()override;
    /**
     * 初始话化窗口
     * @brief initWin
     */
    void initWin();

    /**
     * 键盘事件
     * @brief keyPressEvent
     * @param event
     */
    void keyPressEvent(QKeyEvent *event)override;

    /**
     * 初始化菜单
     * @brief initMenu
     */
    void initMenu();

    /**
     * 添加游戏窗口
     * @brief showSnakeWidget
     */
    void initSnakeWidget();

    /**
     * 添加看板
     * @brief initBoard
     */
    void initBoard();

    /**
     * 测试用
     * @brief someTest
     */
    void someTest();

    /**
     * 事件拦截
     * @brief eventFilter
     * @param obj
     * @param event
     * @return
     */
    //bool eventFilter(QObject * obj,  QEvent * event)override;

signals:

public slots:
    /**
     * 开始游戏
     * @brief startGame
     */
    void startGame();
    /**
     * 接收信息
     * @brief slotGameStart
     * @param currentLevel 当前关卡
     * @param passRequiredScore 通关分数
     */
    void slotGameStart(int currentLevel, int passRequiredScore);

    /**
     * 得分信息
     * @brief slotUpdateScore
     * @param totalScore 总分
     * @param currentLevelScore 当前关卡得分
     */
    void slotUpdateScore(int totalScore, int currentLevelScore);

private:
    //游戏区域
    SnakeWidget * snakeWidget = nullptr;
    //看板
    SnakeBoardWidget * boardWidget;
    //菜单栏高度
    int menuBarHeiht;
    //游戏菜单
    QMenu * gameMenu;
    //开始游戏
    QAction * startAction;
};

#endif // WINDOW7_H
